/**
 */
package de.thwildau.tm.moses.thrift.thrift.util;

import de.thwildau.tm.moses.thrift.thrift.Annotation;
import de.thwildau.tm.moses.thrift.thrift.AnnotationElement;
import de.thwildau.tm.moses.thrift.thrift.BaseTypeRef;
import de.thwildau.tm.moses.thrift.thrift.BooleanRef;
import de.thwildau.tm.moses.thrift.thrift.Const;
import de.thwildau.tm.moses.thrift.thrift.ConstList;
import de.thwildau.tm.moses.thrift.thrift.ConstMap;
import de.thwildau.tm.moses.thrift.thrift.ConstValue;
import de.thwildau.tm.moses.thrift.thrift.ContainerType;
import de.thwildau.tm.moses.thrift.thrift.ContainerTypeRef;
import de.thwildau.tm.moses.thrift.thrift.CppInclude;
import de.thwildau.tm.moses.thrift.thrift.Definition;
import de.thwildau.tm.moses.thrift.thrift.DefinitionRef;
import de.thwildau.tm.moses.thrift.thrift.DefinitionType;
import de.thwildau.tm.moses.thrift.thrift.DoubleRef;
import de.thwildau.tm.moses.thrift.thrift.EnumElement;
import de.thwildau.tm.moses.thrift.thrift.Field;
import de.thwildau.tm.moses.thrift.thrift.FieldType;
import de.thwildau.tm.moses.thrift.thrift.Function;
import de.thwildau.tm.moses.thrift.thrift.FunctionType;
import de.thwildau.tm.moses.thrift.thrift.Header;
import de.thwildau.tm.moses.thrift.thrift.HexRef;
import de.thwildau.tm.moses.thrift.thrift.Include;
import de.thwildau.tm.moses.thrift.thrift.ListType;
import de.thwildau.tm.moses.thrift.thrift.LongRef;
import de.thwildau.tm.moses.thrift.thrift.MapType;
import de.thwildau.tm.moses.thrift.thrift.Namespace;
import de.thwildau.tm.moses.thrift.thrift.NumberRef;
import de.thwildau.tm.moses.thrift.thrift.Senum;
import de.thwildau.tm.moses.thrift.thrift.Service;
import de.thwildau.tm.moses.thrift.thrift.ServiceRef;
import de.thwildau.tm.moses.thrift.thrift.SetType;
import de.thwildau.tm.moses.thrift.thrift.StringRef;
import de.thwildau.tm.moses.thrift.thrift.Struct;
import de.thwildau.tm.moses.thrift.thrift.Thrift;
import de.thwildau.tm.moses.thrift.thrift.ThriftPackage;
import de.thwildau.tm.moses.thrift.thrift.Throws;
import de.thwildau.tm.moses.thrift.thrift.ThrowsField;
import de.thwildau.tm.moses.thrift.thrift.TypeDef;
import de.thwildau.tm.moses.thrift.thrift.Union;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see de.thwildau.tm.moses.thrift.thrift.ThriftPackage
 * @generated
 */
public class ThriftSwitch<T> extends Switch<T>
{
  /**
   * The cached model package
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected static ThriftPackage modelPackage;

  /**
   * Creates an instance of the switch.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public ThriftSwitch()
  {
    if (modelPackage == null)
    {
      modelPackage = ThriftPackage.eINSTANCE;
    }
  }

  /**
   * Checks whether this is a switch for the given package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @parameter ePackage the package in question.
   * @return whether this is a switch for the given package.
   * @generated
   */
  @Override
  protected boolean isSwitchFor(EPackage ePackage)
  {
    return ePackage == modelPackage;
  }

  /**
   * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the first non-null result returned by a <code>caseXXX</code> call.
   * @generated
   */
  @Override
  protected T doSwitch(int classifierID, EObject theEObject)
  {
    switch (classifierID)
    {
      case ThriftPackage.THRIFT:
      {
        Thrift thrift = (Thrift)theEObject;
        T result = caseThrift(thrift);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.HEADER:
      {
        Header header = (Header)theEObject;
        T result = caseHeader(header);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.INCLUDE:
      {
        Include include = (Include)theEObject;
        T result = caseInclude(include);
        if (result == null) result = caseHeader(include);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.CPP_INCLUDE:
      {
        CppInclude cppInclude = (CppInclude)theEObject;
        T result = caseCppInclude(cppInclude);
        if (result == null) result = caseHeader(cppInclude);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.NAMESPACE:
      {
        Namespace namespace = (Namespace)theEObject;
        T result = caseNamespace(namespace);
        if (result == null) result = caseHeader(namespace);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.DEFINITION:
      {
        Definition definition = (Definition)theEObject;
        T result = caseDefinition(definition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.CONST:
      {
        Const const_ = (Const)theEObject;
        T result = caseConst(const_);
        if (result == null) result = caseDefinition(const_);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.TYPE_DEF:
      {
        TypeDef typeDef = (TypeDef)theEObject;
        T result = caseTypeDef(typeDef);
        if (result == null) result = caseDefinition(typeDef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.ANNOTATION:
      {
        Annotation annotation = (Annotation)theEObject;
        T result = caseAnnotation(annotation);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.ANNOTATION_ELEMENT:
      {
        AnnotationElement annotationElement = (AnnotationElement)theEObject;
        T result = caseAnnotationElement(annotationElement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.ENUM:
      {
        de.thwildau.tm.moses.thrift.thrift.Enum enum_ = (de.thwildau.tm.moses.thrift.thrift.Enum)theEObject;
        T result = caseEnum(enum_);
        if (result == null) result = caseDefinition(enum_);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.ENUM_ELEMENT:
      {
        EnumElement enumElement = (EnumElement)theEObject;
        T result = caseEnumElement(enumElement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.SENUM:
      {
        Senum senum = (Senum)theEObject;
        T result = caseSenum(senum);
        if (result == null) result = caseDefinition(senum);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.STRUCT:
      {
        Struct struct = (Struct)theEObject;
        T result = caseStruct(struct);
        if (result == null) result = caseDefinition(struct);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.UNION:
      {
        Union union = (Union)theEObject;
        T result = caseUnion(union);
        if (result == null) result = caseDefinition(union);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.EXCEPTION:
      {
        de.thwildau.tm.moses.thrift.thrift.Exception exception = (de.thwildau.tm.moses.thrift.thrift.Exception)theEObject;
        T result = caseException(exception);
        if (result == null) result = caseDefinition(exception);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.SERVICE:
      {
        Service service = (Service)theEObject;
        T result = caseService(service);
        if (result == null) result = caseDefinition(service);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.SERVICE_REF:
      {
        ServiceRef serviceRef = (ServiceRef)theEObject;
        T result = caseServiceRef(serviceRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.FIELD:
      {
        Field field = (Field)theEObject;
        T result = caseField(field);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.FUNCTION:
      {
        Function function = (Function)theEObject;
        T result = caseFunction(function);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.FUNCTION_TYPE:
      {
        FunctionType functionType = (FunctionType)theEObject;
        T result = caseFunctionType(functionType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.THROWS:
      {
        Throws throws_ = (Throws)theEObject;
        T result = caseThrows(throws_);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.THROWS_FIELD:
      {
        ThrowsField throwsField = (ThrowsField)theEObject;
        T result = caseThrowsField(throwsField);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.FIELD_TYPE:
      {
        FieldType fieldType = (FieldType)theEObject;
        T result = caseFieldType(fieldType);
        if (result == null) result = caseFunctionType(fieldType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.DEFINITION_TYPE:
      {
        DefinitionType definitionType = (DefinitionType)theEObject;
        T result = caseDefinitionType(definitionType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.CONTAINER_TYPE:
      {
        ContainerType containerType = (ContainerType)theEObject;
        T result = caseContainerType(containerType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.MAP_TYPE:
      {
        MapType mapType = (MapType)theEObject;
        T result = caseMapType(mapType);
        if (result == null) result = caseContainerType(mapType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.SET_TYPE:
      {
        SetType setType = (SetType)theEObject;
        T result = caseSetType(setType);
        if (result == null) result = caseContainerType(setType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.LIST_TYPE:
      {
        ListType listType = (ListType)theEObject;
        T result = caseListType(listType);
        if (result == null) result = caseContainerType(listType);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.BASE_TYPE_REF:
      {
        BaseTypeRef baseTypeRef = (BaseTypeRef)theEObject;
        T result = caseBaseTypeRef(baseTypeRef);
        if (result == null) result = caseFieldType(baseTypeRef);
        if (result == null) result = caseDefinitionType(baseTypeRef);
        if (result == null) result = caseFunctionType(baseTypeRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.CONTAINER_TYPE_REF:
      {
        ContainerTypeRef containerTypeRef = (ContainerTypeRef)theEObject;
        T result = caseContainerTypeRef(containerTypeRef);
        if (result == null) result = caseFieldType(containerTypeRef);
        if (result == null) result = caseDefinitionType(containerTypeRef);
        if (result == null) result = caseFunctionType(containerTypeRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.DEFINITION_REF:
      {
        DefinitionRef definitionRef = (DefinitionRef)theEObject;
        T result = caseDefinitionRef(definitionRef);
        if (result == null) result = caseFieldType(definitionRef);
        if (result == null) result = caseConstValue(definitionRef);
        if (result == null) result = caseFunctionType(definitionRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.CONST_VALUE:
      {
        ConstValue constValue = (ConstValue)theEObject;
        T result = caseConstValue(constValue);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.NUMBER_REF:
      {
        NumberRef numberRef = (NumberRef)theEObject;
        T result = caseNumberRef(numberRef);
        if (result == null) result = caseConstValue(numberRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.HEX_REF:
      {
        HexRef hexRef = (HexRef)theEObject;
        T result = caseHexRef(hexRef);
        if (result == null) result = caseNumberRef(hexRef);
        if (result == null) result = caseConstValue(hexRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.LONG_REF:
      {
        LongRef longRef = (LongRef)theEObject;
        T result = caseLongRef(longRef);
        if (result == null) result = caseNumberRef(longRef);
        if (result == null) result = caseConstValue(longRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.DOUBLE_REF:
      {
        DoubleRef doubleRef = (DoubleRef)theEObject;
        T result = caseDoubleRef(doubleRef);
        if (result == null) result = caseNumberRef(doubleRef);
        if (result == null) result = caseConstValue(doubleRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.BOOLEAN_REF:
      {
        BooleanRef booleanRef = (BooleanRef)theEObject;
        T result = caseBooleanRef(booleanRef);
        if (result == null) result = caseConstValue(booleanRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.STRING_REF:
      {
        StringRef stringRef = (StringRef)theEObject;
        T result = caseStringRef(stringRef);
        if (result == null) result = caseConstValue(stringRef);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.CONST_LIST:
      {
        ConstList constList = (ConstList)theEObject;
        T result = caseConstList(constList);
        if (result == null) result = caseConstValue(constList);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case ThriftPackage.CONST_MAP:
      {
        ConstMap constMap = (ConstMap)theEObject;
        T result = caseConstMap(constMap);
        if (result == null) result = caseConstValue(constMap);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      default: return defaultCase(theEObject);
    }
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Thrift</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Thrift</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseThrift(Thrift object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Header</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Header</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseHeader(Header object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Include</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Include</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInclude(Include object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Cpp Include</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Cpp Include</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseCppInclude(CppInclude object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Namespace</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Namespace</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNamespace(Namespace object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Definition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Definition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDefinition(Definition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Const</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Const</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConst(Const object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Type Def</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Type Def</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTypeDef(TypeDef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Annotation</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Annotation</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAnnotation(Annotation object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Annotation Element</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Annotation Element</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseAnnotationElement(AnnotationElement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Enum</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Enum</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEnum(de.thwildau.tm.moses.thrift.thrift.Enum object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Enum Element</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Enum Element</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEnumElement(EnumElement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Senum</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Senum</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSenum(Senum object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Struct</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Struct</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStruct(Struct object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Union</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Union</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseUnion(Union object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Exception</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Exception</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseException(de.thwildau.tm.moses.thrift.thrift.Exception object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Service</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Service</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseService(Service object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Service Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Service Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseServiceRef(ServiceRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Field</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Field</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseField(Field object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Function</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Function</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFunction(Function object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Function Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Function Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFunctionType(FunctionType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Throws</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Throws</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseThrows(Throws object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Throws Field</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Throws Field</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseThrowsField(ThrowsField object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Field Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Field Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFieldType(FieldType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Definition Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Definition Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDefinitionType(DefinitionType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Container Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Container Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseContainerType(ContainerType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Map Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Map Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMapType(MapType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Set Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Set Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSetType(SetType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>List Type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>List Type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseListType(ListType object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Base Type Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Base Type Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBaseTypeRef(BaseTypeRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Container Type Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Container Type Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseContainerTypeRef(ContainerTypeRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Definition Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Definition Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDefinitionRef(DefinitionRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Const Value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Const Value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConstValue(ConstValue object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Number Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Number Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseNumberRef(NumberRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Hex Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Hex Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseHexRef(HexRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Long Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Long Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLongRef(LongRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Double Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Double Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDoubleRef(DoubleRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Boolean Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Boolean Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBooleanRef(BooleanRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>String Ref</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>String Ref</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseStringRef(StringRef object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Const List</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Const List</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConstList(ConstList object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Const Map</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Const Map</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConstMap(ConstMap object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch, but this is the last case anyway.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
   * @generated
   */
  @Override
  public T defaultCase(EObject object)
  {
    return null;
  }

} //ThriftSwitch
